package fiuba.algo3.vista;

import javax.swing.*;

import fiuba.algo3.usuario.Usuario;
import fiuba.algo3.vista.Game;
import fiuba.algo3.control.*;

@SuppressWarnings("serial")
public class JFPrincipal extends JFrame{

	final int MIZQUIERDO = 200;
	private Controlador controlador = new Controlador(this);
	private Bienvenida bienvenida;
	private NuevoUsuario nuevoUsuario;
	private ElegirUsuario elegirUsuario;
	private SeleccionDeDificultadYVehiculo seleccionDeDificultadYVehiculo;
	private Inicial inicial;
	private Game game;
	private PantallaFinal pantallaFinal;
	
	private static int maxHeight = GetScreenWorkingHeight();
	private static int maxWidth = GetScreenWorkingWidth();
	
	
	public static void main(String[] args) {
		JFPrincipal _frame=new JFPrincipal();
		_frame.setBounds(0,0,maxWidth,maxHeight);
		_frame.setVisible(true);
		_frame.setResizable(false);
	}

	
	public JFPrincipal(){
		
		bienvenida();
		
		setTitle("GPS-Challenge v1.0");

		//cerrar con la cruz
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void bienvenida() {
		bienvenida = new Bienvenida(0,0,maxWidth,maxHeight,controlador,this);
		this.add(bienvenida);
	}

	public void iniciarJuego(int maxWidth,int maxHeight) {
		game = new Game(0,0,maxWidth,maxHeight,controlador,this);
		this.add(game);
	}
	
	public void crearNuevoUsuario(int maxWidth,int maxHeight){
		nuevoUsuario = new NuevoUsuario(0,0,maxWidth,maxHeight,this);
		this.add(nuevoUsuario);
	}
	
	public void elegirUsuario(int maxWidth,int maxHeight){
		elegirUsuario = new ElegirUsuario(0,0,maxWidth,maxHeight,controlador,this);
		this.add(elegirUsuario);
	}
	
	public void inicial(int maxWidth,int maxHeight){
		inicial = new Inicial(0,0,maxWidth,maxHeight,this);
		this.add(inicial);
	}

	public void seleccionarDificultadYVehiculo(int maxWidth, int maxHeight,Usuario usuario) {
		seleccionDeDificultadYVehiculo = new SeleccionDeDificultadYVehiculo(0,0,maxWidth,maxHeight,usuario,controlador,this);
		this.add(seleccionDeDificultadYVehiculo);
	}
	
	public static int GetScreenWorkingWidth(){
	    return java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().width;
	}

	public static int GetScreenWorkingHeight(){
	    return java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().height;
	}

	public void actualizar(){
		game.actualizar();
	}

	public void actualizarDatosDeJuego() {
		game.actualizarDatosDeJuego();
		
	}

	public void partidaGanada() {
		this.game.setVisible(false);
		this.pantallaFinal = new PantallaFinal(0,0,maxWidth,maxHeight,"GANASTE!!",controlador,this);
		this.add(pantallaFinal);
		
	}

	public void partidaPerdida() {
		this.game.setVisible(false);
		this.pantallaFinal = new PantallaFinal(0,0,maxWidth,maxHeight,"PERDISTE :(",controlador,this);
		this.add(pantallaFinal);
		
	}

	public void quitarMenus() {
		if(inicial != null){
			this.inicial.setVisible(false);
			this.remove(inicial);
		}
		if(nuevoUsuario != null){
			this.nuevoUsuario.setVisible(false);
			this.remove(nuevoUsuario);
		}
		if(elegirUsuario != null){
			this.elegirUsuario.setVisible(false);
			this.remove(elegirUsuario);
		}
		if(seleccionDeDificultadYVehiculo != null){
			this.seleccionDeDificultadYVehiculo.setVisible(false);
			this.remove(seleccionDeDificultadYVehiculo);
		}
		if(pantallaFinal != null){
			this.pantallaFinal.setVisible(false);
			this.remove(pantallaFinal);
		}

	}
	
}